## 字符串

# ●字符串的定义
str1 = 'abc'
str2 = "abc"
str3 = '''abc'''
print(str1, id(str1))
print(str2, id(str2))
print(str3, id(str3))
str1 = str1 +'卢卡斯地方'
print(str1, id(str1))


# ●join() 拼接字符串
strjoin = '-'.join('张胜男')
print(strjoin)  # 张-胜-男


# ●字符串查找操作
str4 = 'hello,hello'
# find()查找字符第一次出现的位置； -1表示不存在！
print('find()查找字符串中指定字符的索引：', str4.find('el'))
print('find()查找字符串中指定字符的索引：', str4.find('ele'))
# rfind()查找字符最后一次出现的位置; -1表示不存在！
print(str4.rfind('el'))
print(str4.rfind('ele'))
# index()查找字符第一次出现的位置; 注意：查找的字符不存在会报错！！
print(str4.index('el'))
# print(str4.index('ele'))
# rindex()查找字符最后一次出现的位置;  注意：查找的字符不存在会报错！！
print(str4.rindex('el'))
# print(str4.rindex('ele'))


# ●字符串大小写转换
str5 = 'hello Python'
# upper() 大写转换会产生一个新的对象！
print(str5.upper())
# lower() 小写转换会产生一个新的对象！
print(str5.lower())
# swapcase() 将小写转大写，也可将大写转小写
print(str5.swapcase()) # HELLO pYTHON
# capitalize() 将字符串中第一个字符转为大写，其它为小写
print(str5.capitalize())
# title() 将单词的第一个字母转大写，也可转小写
str6 = 'hello python'
print(str6.title())


# ●字符串填充对齐
# center(字符串长度, 填充字符)居中对齐(两边填充)
str7 = 'ZhangSan'
print(str7.center(10))  # ZhangSan  默认是空格
print(str7.center(10, '*'))     # *ZhangSan*
# ljust(字符串长度, 填充字符) 左对齐(右填充)
print(str7.ljust(10, '*'))
# rjust(字符串长度, 填充字符) 右对齐(左填充)
print(str7.rjust(10, '*'))
# zfill(字符串长度) 左填充默认填充0
print(str7.zfill(10))
print('-34534'.zfill(10)) # -000034534 特殊案例


# ●字符串分割
str8 = 'hello Python'
str9 = 'hello-Python-涛涛涛涛'
# split() 默认分割空格，返回列表list
lst1 = str8.split()
print(lst1)
# split(sep='-', maxsplit=1) sep:分割符，maxsplit:分割次数
print(str9.split(sep='-'))  # split() 指定参数分割
print(str9.split(sep='-', maxsplit=1))  #  ['hello', 'Python-涛涛涛涛']
# rsplit() 从右侧分割
print(str9.rsplit('-'))
print(str9.rsplit(sep='-', maxsplit=1))

print('--------------------------------------')
str11 = 'hello,python'
# isidentifier()判断字符串是不是合法标识符
print('1.', str11.isidentifier())
print('1.', 'hello'.isidentifier())
print('1.', '张三_'.isidentifier())
print('1.', '张三_123'.isidentifier())

# 判断字符串是否全为，空白字符串，回车，换行，水平制表符
print('2.', '\t'.isspace())

# 判断字符串是否全部为字母组成
print('3.', 'abc'.isalpha())
print('3.', '张三'.isalpha())
print('3.', '张三1'.isalpha())
# 判断字符串是否全部为十进制数字组成
print('4.', '123'.isdecimal())
print('4.', '123帐'.isdecimal())
print('4.', '||'.isdecimal())
# 判断字符串是否全部为数字组成
print('5.', '123'.isnumeric())
print('5.', '123四'.isnumeric())
# 判断字符串是否全部为字母与数字组成
print('6.', 'abc123'.isalnum())
print('6.', 'abc_123'.isalnum())




# 根据指定字符串获取索引位置
source_str = "Hello, World! This is a string."
# 查找子字符串
target_str = "World"
print(source_str.find(target_str)) # 结果： 7

print('--------------------------------------')

# 根据指定字符串的位置，作为起始~到结束 这段字符删除；
source_str = "Hello, World! This is a string."
target_str = "World"
index = source_str.find(target_str)
if index != -1:
    print(source_str[:index]) # 结果：Hello,
